Il sistema ad agenti mobili  composto da due moduli:
SOMA (Secure and Open Mobile Agent);
MARS (Mobile Agent Reactive Spaces).


Requisiti di sistema

JDK 1.2 beta 2
Cryptix 3.03 (pacchetto crittografico)


Topologia della rete in SOMA

Il sistema ad agenti mobili SOMA organizza logicamente la rete in Place e
Domini. Ogni nodo della rete  visto come Place, i Place sono raggruppati
in Domini. Ogni Dominio ha un Gateway che regola l'accesso dall'esterno ai
propri Place.

Nelle istruzioni di installazione e negli esempi proposti si assume che vi
siano due Domini, chiamati Dom1 e Dom2.
Dom1  composto da un solo Place: Bach.
Dom2  composto da due Place: Escher e Godel.
I tre Place sono ospitati dallo stesso host.

Gli archivi di installazione sono predisposti per questa configurazione:
per avviare il sistema occorre installare i sistemi SOMA e MARS su un
unico host. Nel caso si voglia cambiare la configurazione di default,
bisogna installare i sistemi su ogni host voluto e riconfigurare la
topologia della rete di SOMA.


Installazione

Installare i file di SOMA e di MARS a partire dalla HOME directory, per
mezzo dei comandi:
	tar xf SOMA.tar
	tar xf MARS.tar

Dovrebbero quindi essere presenti le seguenti directory:
	$HOME/SOMA
	$HOME/MARS
	$HOME/Cryptix	(se installato nella HOME directory)

Aggiornare il CLASSPATH:
	export CLASSPATH=$HOME/MARS:$HOME/SOMA:
		$HOME/Cryptix/classes/SPT_0-0-9.jar:
		$HOME/Cryptix/classes/IJCE_0-0-11.jar:
		$HOME/Cryptix/classes/RSA_0-0-9.jar
N.B.: la presenza della directory corrente "." nel CLASSPATH crea problemi
nel caso di ricompilazione di SOMA.

Aggiornare il file lib/security/java.security del JDK 1.2 nel seguente
modo:
	policy.provider = AgentSystem.AgentPolicy
	security.provider.2 = cryptix.provider.Cryptix
La prima riga indica nella classe AgentSystem.AgentPolicy il nuovo gestore
della politica di sicurezza. La seconda riga aggiunge il pacchetto Cryptix
alla lista dei fornitori degli algoritmi crittografici.


Per avviare il sistema (e gli esempi di prova) nella configurazione di
default, saltare i paragrafi di configurazione e passare ad "Avvio del
sistema"


Configurazione della topologia di SOMA

Ogni Place ha una propria directory sull'host nel quale  presente.

Nella configurazione di default sono presenti tre Place sullo stesso host,
per cui sono create le seguenti directory:
	$HOME/SOMA/Bach
	$HOME/SOMA/Escher
	$HOME/SOMA/Godel

Inoltre, ogni directory di Place deve avere una sottodirectory "esterno",
in cui sono memorizzate le classi degli agenti caricate dinamicamente
attraverso il Class Loader.

La topologia  specificata nei file agentsX.net e DomainX.net, generati
dalle classi SetupX.java nella directory SOMA/Sets (dove l'X sta per il
numero del dominio).
I file agentsX.net contengono le informazioni su tutti i Place di un
Dominio e devono essere posti nelle directory di Place di ogni Place del
Dominio in questione. Deve essere inoltre posto nella directory SOMA
dell'host in cui  avviato il Gateway del Dominio.
I file DomainX.net contengono le informazioni su tutti i Domini presenti
nella rete. Una copia di DomainX.net deve essere posta nella directory
SOMA dell'host in cui  avviato il Gateway del Dominio X.

Per modificare la topologia  necessario modificare opportunamente i file
SetupX.java e distribuire i file *.net generati secondo le regole sopra
enunciate.


Configurazione della politica di sicurezza di SOMA

La politica di sicurezza  espressa su due livelli: la politica di Dominio
(o di default) e la politica di Place.
La politica di Dominio  contenuta in un file DefaultX.pol nella directory
SOMA dell'host in cui  avviato il Gateway del Dominio. La politica di
Place  contenuta in un file PolX.pol nella directory di Place.

Per esaminare e modificare le politiche di sicurezza di SOMA avvia il tool
AgentPolicyTool:
	java AgentSystem.AgentPolicyTool


Configurazione degli strumenti crittografici di SOMA

Il file .keystore contiene le coppie di chiavi DSA per la firma digitale
degli agenti. Ogni utente ed ogni Place deve possedere la propria coppia
di chiavi.
Il file .RSAKeyStore contiene le coppie di chiavi RSA per la cifratura
degli agenti. Ogni Place deve possedere la propria coppia di chiavi.
Copie dei due file devono essere presenti in ogni directory di Place.

Per esaminare e modificare il file .keystore bisogna usare il tool di JDK
1.2 keytool. La password del .keystore  "keystorepassword".

Per modificare il file .RSAKeyStore bisogna usare AgentSystem.RSAKeyTool.


Avvio del sistema

Per avviare il Gateway di un Dominio:
	java GateWay.GateMain agents1.net Domain1.net 5001 Default1.pol
dove i parametri rappresentano:
	il file di configurazione dei Place del Dominio;
	il file di configurazione dei Domini;
	la porta d'ascolto del Gateway;
	il file della politica di default.

Per avviare un Place:
	java AgentSystem.Main agents1.net 5555 5550 Dom1 Bach 
		$HOME/MAM2/Bach Pol1.pol .keystore .RSAKeyStore
dove i parametri rappresentano:
	il file di configurazione dei Place del Dominio;
	la porta per la connessione con gli altri Place;
	la porta per le richieste di creazione di nuovi agenti;
	il nome del Dominio;
	il nome del Place;
	la directory del Place;
	il file della politica del Place;
	il file con le chiavi per la firma degli agenti;
	il file con le chiavi per la cifratura degli agenti.

Una volta avviati tutti i Gateway e i Place si possono lanciare gli
agenti. Le classi degli agenti devono essere poste nella directory del
Place di partenza.

Per lanciare un agente:
	java AgentSystem.Starter provaplace 5550 johndoe
dove i parametri rappresentano:
	la classe dell'agente;
	la porte per le richieste di creazione di nuovi agenti del Place;
	il nome dell'utente.
Il sistema richiede di inserire la password dell'utente, per poter firmare
a suo nome l'agente (Per l'utente "johndoe" la password  "jamesstewart").
La password  definita nel file .keystore. Per maggiori informazioni
consultare la documentazione del keytool del JDK.


Esempi

Avviare il registro RMI di Java:
	rmiregistry &

Per avviare il sistema nella configurazione di default eseguire il file
avvia.

Per lanciare gli agenti del primo esempio (ricerca di informazioni
distribuite) eseguire il file esempio1.

Per lanciare gli agenti del secondo esempio eseguire il file esempio2.

Per lanciare gli agenti del terzo esempio (prenotazione di un volo)
eseguire il file esempio3.


Compatibilit con JDK 1.2

SOMA  sviluppato in JDK 1.2 beta 2. Per la compatibilit con la versione
definitiva del JDK 1.2, vedere l'home page di SOMA:
	http://www-lia.deis.unibo.it/Software/MA
Nel caso fosse disponibile una versione aggiornata di SOMA, bisogna
modificarla come descritto nel file MODIFICA.TXT, per renderla funzionante
con il sistema MARS.
Per aggiornare MARS alla versione definitiva di JDK 1.2, vedere il file
MARS-JDK.TXT.

